package com.molichuxing.gateway.api.services;

import java.util.List;
import java.util.Map;

import org.springframework.validation.BindingResult;

import com.molichuxing.framework.dto.Paged;
import com.molichuxing.framework.result.ResponseResult;
import com.molichuxing.gateway.bff.user.entity.request.create.EnterpriseCreateVo;
import com.molichuxing.gateway.bff.user.entity.request.modify.ComplaintModifyVo;
import com.molichuxing.gateway.bff.user.entity.request.modify.DrivingLicenseModifyVo;
import com.molichuxing.gateway.bff.user.entity.request.modify.EnterpriseModifyVo;
import com.molichuxing.gateway.bff.user.entity.response.ComplaintVo;
import com.molichuxing.gateway.bff.user.entity.response.DrivingLicenseVo;
import com.molichuxing.gateway.bff.user.entity.response.EnterpriseVo;
import com.molichuxing.gateway.bff.user.entity.response.IdentityCardVo;
import com.molichuxing.gateway.bff.user.entity.response.UserVo;

/**
 * 
 * @author liyg
 * 用户web接口
 * 2019-08-29
 *
 */
public interface UserApiService {

	/**
	 * 获取用户列表
	 * @param map
	 * @return
	 */
	ResponseResult<Paged<UserVo>> getUserList(Map<String, Object> map);

	/**
	 * 根据用户id获取用户信息
	 * @param userId
	 * @return
	 */
	ResponseResult<UserVo> getUserById(Integer userId);

	/**
	 * 获取用户身份证信息
	 * @param userId
	 * @return
	 */
	ResponseResult<IdentityCardVo> getIdentityCard(Integer userId);

	/**
	 * 根据订单编号获取用户信息 
	 * @param orderCode
	 * @return
	 */
	ResponseResult<UserVo> getUserByOrderCode(Long orderCode);
	
	/**
	 * 获取驾驶证列表
	 * @param map
	 * @return
	 */
	ResponseResult<Paged<DrivingLicenseVo>> getDrivingLicenseList(Map<String, Object> map);

	/**
	 * 获取用户驾驶证信息
	 * @param userId
	 * @return
	 */
	ResponseResult<DrivingLicenseVo> getDrivingLicense(Integer userId);

	/**
	 * 编辑审核状态
	 * @param modifyVo
	 * @return
	 */
	ResponseResult<Boolean> modifyVerifyStatus(DrivingLicenseModifyVo modifyVo);
	
	/**
	 * 获取投诉列表
	 * @param map
	 * @return
	 */
	ResponseResult<Paged<ComplaintVo>> getComplaintList(Map<String, Object> map);

	/**
	 * 获取用户投诉详情
	 * @param id
	 * @return
	 */
	ResponseResult<ComplaintVo> getComplaint(Integer id);

	/**
	 * 编辑投诉信息
	 * @param modifyVo
	 * @return
	 */
	ResponseResult<Boolean> modifyComplaint(ComplaintModifyVo modifyVo);

	/**
	 * 获取企业用户列表
	 * @param map
	 * @return
	 */
    ResponseResult<Paged<EnterpriseVo>> getEnterpriseList(Map<String, Object> map);

    /**
     * 根据企业用户id获取企业用户详情
     * @param id
     * @return
     */
	ResponseResult<EnterpriseVo> getEnterpriseById(Integer id);

	/**
	 * 修改企业用户信息
	 * @param modifyVo
	 * @param bindingResult
	 * @return
	 * 
	 */
	ResponseResult<Boolean> modifyEnterprise(EnterpriseModifyVo modifyVo, BindingResult bindingResult);

	/**
	 * 新增企业用户信息
	 * @param modifyVo
	 * @param bindingResult
	 * @return
	 * 
	 */
	ResponseResult<Boolean> createEnterprise(EnterpriseCreateVo createVo, BindingResult bindingResult);

	
	/**
	 * 模糊查询企业用户信息列表
	 * @param
	 * @return
	 */
	ResponseResult<List<EnterpriseVo>> getEnterpriseBaseList(String name);

}